A server is typically a software construct instantiated on a machine for the purpose of facilitating access to server data by a client. The server may be a single server operating on a physical machine, one of a plurality of servers operating on a physical machine, or one of a plurality of servers operating on a plurality of physical machines organized into a cluster, among other things. The client may be an application on a machine that is remote from or local to the machine/cluster of the accessed server, is typically connected to the machine/cluster of the server by a network such as the Internet and/or an Intranet, and addresses the server by way of one or more protocols such as TCP, LDAP, VIA, HTTP, or the like.
Typically, the client application employs server software to implement communication with and accessing data from a server at a machine/cluster. One example of such server software is SQL SERVER 2000 as developed and marketed by MICROSOFT Corporation of Redmond, Wash., USA, which is primarily employed to store and retrieve relational data by way of SQL (structured query language) commands. Generally, the client identifies the server by a name of the cluster/server upon which the server resides, the server software connects the client to the server based on the identified name, and the client thus can send a server request to the server based on the server name and receive appropriate information and/or data in response thereto.
Server availability in a clustered system is oftentimes increased by allowing the clustered system to automatically switch processing for an instance of a server from a failed server to a working server. Thus, the working server takes the place of the failed server and restores database services to a client formerly accessing data from the failed server. A set of clients and clustered servers interconnected by a System Area Network (SAN) is an example of a clustered system that automatically switches processing from a failed server to a working server. A SAN is typically operated at high speed and is employed in situations where such high speed is required, such as in back-office-type scenarios. Such SAN may be accessed by a client by way of protocols built according to a high-speed architecture such as the Virtual Interface Architecture (VIA). However, the operating system at the SAN of the SAN does not provide any support to enable VIA connectivity to clustered servers thereon, and does not provide any fail-over support to re-direct a request from the client from the failed server to the working server.
Accordingly, a need exists for a fail-over mechanism for a client of an SAN or the like to allow the client to discover the working server when the failed server fails. In particular, a need exists for such a fail-over mechanism implemented according to VIA.